package com.hsnn.medstgmini.pro.project.service;

import java.util.List;
import java.util.Map;

import com.hsnn.medstgmini.base.dict.model.DicExperttype;
import com.hsnn.medstgmini.base.dict.model.DicSys;
import com.hsnn.medstgmini.base.std.model.StdExpert;
import com.hsnn.medstgmini.pro.project.model.BidExpertExtractListRuleList;
import com.hsnn.medstgmini.pro.project.model.BidExpertExtractRule;
import com.hsnn.medstgmini.pro.project.model.BidExpertType;
import com.hsnn.medstgmini.pro.project.model.BidProjExpert;
import com.hsnn.medstgmini.pro.project.model.form.BidExpertExtractRuleListForm;
import com.hsnn.medstgmini.pro.project.model.BidExpertExtractRuleListFormLog;
import com.hsnn.medstgmini.util.Pagination;

public interface BidExpertExtractRuleManager {
	
	
	public List<Map<String, Object>> getRuleByIdList(String ruleId);
	public List<Map<String, Object>> getHospRuleByIdList(String ruleId);
	public List<Map<String, Object>> getExpertRuleByIdList(String ruleId);
	public Object getExpertTypeRuleById();
	public List<BidExpertExtractListRuleList> getSuExpertTypeByInfusion(String fatherExpertId);
	public void saveRuleByIdList(BidExpertExtractRuleListForm data);
	public void saveHospLevelList(BidExpertExtractRuleListForm data);
	public void saveExpertLevelList(BidExpertExtractRuleListForm data);
	public BidExpertType getBidExpertType(String ruleId);
	/**
	 * @category 保存规抽取规则
	 * @author 徐国鹏
	 * @param extractRule
	 * @return Boolean
	 */
	public Boolean saveExtractRule(BidExpertExtractRuleListForm extractRule);
	/**
	 * @category 执行抽取规则
	 * @author 徐国鹏
	 * @param List<BidExpertExtractListRuleList> list
	 * @return List<BidProjExpert> 
	 */
	public List<BidProjExpert>  executeExtractRule(List<BidExpertExtractRuleListForm> list);
	
	/**
	 * @category 获取一级专家类别列表
	 * @author 徐国鹏
	 * @param fatherRuleId
	 * @return List<BidExpertExtractListRuleList> list
	 */
	public List<BidExpertExtractListRuleList> getSuExpertTypeByFatherId(String fatherExpertId);
	/**
	 * @category 获取规则列表
	 * @author 徐国鹏
	 * @param Pagination page
	 * @return BidProjExpert
	 */
	public Pagination getExpertExtractRulePage(Pagination page);
	/**
	 * @category 获取专家查看
	 * @author 徐国鹏
	 * @param Pagination page
	 * @return BidProjExpert
	 */
	public Pagination getExpertExtractRulePageList(Pagination page);
	/**
	 * @category 查看专家查看(子表)
	 * @author 徐国鹏
	 * @param Pagination page
	 * @return BidProjExpert
	 */
	public Pagination getExpertTypeRuleList(Pagination page);
	/**
	 * @category 抽取专家设置--查看专家查看(子表)
	 * @author 徐国鹏
	 * @param Pagination page
	 * @return BidProjExpert
	 */
	public Pagination getExperttypeRuleList(Pagination page);
	/**
	 * @category 查看医疗机构查看（子表）
	 * @author 徐国鹏
	 * @param Pagination page
	 * @return BidProjExpert
	 */
	public Pagination getHospTypeList(Pagination page);
	/**
	 * 
	 * @category 启用停用
	 * @author 徐国鹏
	 * @param list
	 * @param userId
	 */
	public void switchStatus(BidExpertExtractRuleListForm data);
	
	/**
	* @category 获取抽取规则维护记录前后对比
	* @author zhouqi
	* @param Pagination page
	* @return Pagination
	*/
	public List<BidExpertExtractRuleListFormLog> getRuleCompare(String ruleId, String updDateTime);	
	
	/**
	 * @category 根据类别Id获取医疗机构分类
	 * @author zhouqi
	 * @param fatherRuleId
	 * @return List<BidExpertExtractRule> list
	 */
    public DicSys getHospTypeById(String id);
    
    public BidExpertExtractRuleListForm getDicExpertTypeById(String string);
    
    public List<Map<String, Object>> getExpertName(String id);
    public List<Map<String, Object>> getHospType(String id);
    /**
     * @category 保存医疗机构分类
     * @Auther 徐国鹏
     * @date 2015年10月19日 上午9:54:36
     * @param bidProjExpert
     */
    public Boolean savaHospExpert(BidProjExpert bidProjExpert);
	///////////////////////////////////////////////////////////////////////////////
	
	
	
	
	
	
	/**
	 * @category 根据规则id获取抽取规则
	 * @author zhouqi
	 * @param String ruleId
	 * @return BidExpertExtractRule
	 */
	public BidExpertExtractRule getRuleById(String ruleId);
	
	/**
	 * @category 根据父规则id获取子类抽取规则
	 * @author zhouqi
	 * @param fatherRuleId
	 * @return List<BidExpertExtractRule> list
	 */
	public List<BidExpertExtractRule> getRuleByFatherRuleId(String fatherRuleId);
	
	
	
	/**
	 * @category 根据类别Id获取专家类别
	 * @author zhouqi
	 * @param fatherRuleId
	 * @return List<BidExpertExtractRule> list
	 */
    public DicExperttype getDicExperttypeById(String id);

    public Boolean saveProjExpert(BidProjExpert bidProjExpert);
    
	   /**
		 * @category 获取被抽取专家列表
		 * @author zhouqi
		 * @param Pagination page
		 * @return Pagination
		 */
	public Pagination getExtractExpertList(Pagination page);
	
   /**
	* @category 根据专家类别获取专家数量
	* @date 2015年8月31日14:33:46
    * @author zhouqi
	* @param Pagination page
	* @return Pagination
	*/
	public Integer getExpertCountByType(String expertTypeId);
	
   /**
	* @category 获取抽取规则日志列表
	* @author zhouqi
	* @param Pagination page
	* @return Pagination
	*/
	public Pagination getExtractRuleLogList(Pagination page);	
   
	
	/**
   	 * @category 根据id获取所有下级专家类别
   	 * @author zhouqi
   	 * @date 2015年9月1日10:03:52
   	 * @param String , Timestamp 
   	 * @return List<BidExpertExtractRuleLog>
   	 */
	List<DicExperttype> getAllSubExpertType(String id);
	
   /**
	* @category 根据专家类型id获取下面所有专家数量
    * @author zhouqi
	* @param Pagination page
	* @return Pagination
	*/
	public Integer getAllSubExpertCountByTypeId(String expertTypeId);
	/**
	* @category 根据项目id获取所有专家
    * @author zhouqi
	* @param String id
	* @return List<StdExpert>
	*/
	List<StdExpert> getExpertByProjId(String id);
}
